<?php

namespace app\api\controller\pub;

use app\api\controller\Base;
use app\api\controller\Pub;
use think\facade\Request;

class Siliconflow extends Base
{
    /**
     * https://cloud.siliconflow.cn/
     * 云客 - 电话管理系统
     * 前置：创建数据库：表名[xxx_tel_bind],包含[phone]字段
     * 1、查询绑定[checkBind]：如果data为空证明已绑定，跳到第4步，
     * 2、获取验证码[imgCode]
     * 3、绑定手机号为坐席[bindPhone]
     * 4、请求回拨[dial]
     */
    private $app_key   = '';
    private $partnerId = '';
    private $company   = '';

    public function initialize()
    {
        parent::initialize();
        // if(!get_config_value('yunke_switch')){
        //     return serr('电话管理系统功能暂未开放');
        // }
        // $this->app_key = get_config_value('yunke_app_key');
        // $this->partnerId = get_config_value('yunke_partnerId');
        // $this->company = get_config_value('yunke_company');
    }

    /**
     * 创建文本对话请求
     * @param  [type] $content [一句话的内容]
     * @param  array  $message [多段对话的内容] 机器 assistant
     * @return [type]          [description]
     */
    public function chat_completions($content,$message=[])
    {
        $message[] = ['role' => 'user', 'content' => $content];
        $req = $this->request('/chat/completions','', $message);
        if (empty($req)) {
            return serr('大模型解析失败');
        }
        return $req;
    }

    /**
     * 发送请求
     * @param  [type] $path     [description]
     * @param  string $model    [使用的模型]
     * @param  array  $amessage [对话内容]
     * @return [type]           [description]
     */
    public function request($path,$model='', $message = []){
        set_time_limit(300);
        // 定义 API 端点和 API 密钥
        $apiEndpoint = 'https://api.siliconflow.cn/v1'.$path; // 替换为实际接口地址
        $apiKey = 'sk-nokuwoerneqsxireomlowwicexlltxturaivbdhixecralka'; // 替换为你的 API 密钥

        // 设置请求头
        $headers = [
            'Content-Type: application/json',
            'Authorization: Bearer ' . $apiKey
        ];
        //默认模型为Pro/deepseek-ai/DeepSeek-R1
        $model=empty($model)?'Pro/deepseek-ai/DeepSeek-R1':$model;
        // 设置对话内容
        $data = [
            'model' => $model, // 指定模型
            'messages' => $message,
            // 'max_tokens'=>16384 
        ];
        // 初始化 cURL
        $ch = curl_init($apiEndpoint);

        // 配置 cURL 选项
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回响应而不是直接输出
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 设置请求头
        curl_setopt($ch, CURLOPT_POST, true);           // 使用 POST 方法
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); // 发送 JSON 数据

        // 执行请求并获取响应
        $response = curl_exec($ch);

        // 检查是否有错误
        if (curl_errno($ch)) {
            echo '请求失败，错误信息：' . curl_error($ch);
            // 关闭 cURL 会话
            curl_close($ch);
        } else {
            // 解析 JSON 响应
            $responseData = json_decode($response, true);
            // 检查响应并输出结果
            if (isset($responseData['choices'][0]['message']['content'])) {
                return  $responseData['choices'][0]['message']['content'];
            } else {
                echo '未收到有效回复。响应数据：' . print_r($responseData, true);
            }
            // 关闭 cURL 会话
            curl_close($ch);
        }
    }


}
